package installer

import (
	"fmt"
	"os/exec"
	"strings"

	"go.uber.org/zap"
)

// stopSSHService 停止SSH服务
// 示例值: 无参数
func (i *Installer) stopSSHService() error {
	zap.L().Info("停止SSH服务")

	// 尝试不同的服务管理命令
	commands := [][]string{
		{"systemctl", "stop", "ssh"},
		{"systemctl", "stop", "sshd"},
		{"service", "ssh", "stop"},
		{"service", "sshd", "stop"},
	}

	for _, cmdArgs := range commands {
		cmd := exec.Command(cmdArgs[0], cmdArgs[1:]...)
		if err := cmd.Run(); err == nil {
			zap.L().Info("SSH服务停止成功", zap.String("command", strings.Join(cmdArgs, " ")))
			return nil
		}
	}

	return fmt.Errorf("无法停止SSH服务")
}

// startSSHService 启动SSH服务
// 示例值: 无参数
func (i *Installer) startSSHService() error {
	zap.L().Info("启动SSH服务")

	// 尝试不同的服务管理命令
	commands := [][]string{
		{"systemctl", "start", "ssh"},
		{"systemctl", "start", "sshd"},
		{"service", "ssh", "start"},
		{"service", "sshd", "start"},
	}

	for _, cmdArgs := range commands {
		cmd := exec.Command(cmdArgs[0], cmdArgs[1:]...)
		if err := cmd.Run(); err == nil {
			zap.L().Info("SSH服务启动成功", zap.String("command", strings.Join(cmdArgs, " ")))
			return nil
		}
	}

	return fmt.Errorf("无法启动SSH服务")
}
